<!DOCTYPE html>

<html>

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Array对象</title>

    <script>
        // 直接在 script 元素内部嵌入的代码属于全局代码(即在"全局的对象"作用域上书写代码)
        let a = ['唐玄奘', '孙悟空', '白龙马', '猪悟能', '沙悟净'];
        console.log(a);

        // 输出 Array原型上定义的 length 属性值
        console.log(Array.prototype.length);
        // 修改 Array原型 上 length 属性值
        Array.prototype.length = 10;
        console.log(Array.prototype.length);

        // 即使修改了 Array原型上的 length 属性，也不影响已经创建的数组实例
        console.log(a);

        // 创建一个 String实例 ，其内部包裹了 'hello' ( 原生类型string值 )
        let b = new String('hello');
        console.log(b);

        // 输出 String原型 上定义的 length 属性值
        console.log(String.prototype.length); // 0
        // 尝试修改 String原型 上 length 属性值
        String.prototype.length = 20;
        console.log(String.prototype.length); // 0

        console.log(b);

        console.log('- - - - - - - -');

        //输出Array.prototype上的函数和属性
        let names = Object.getOwnPropertyNames(Array.prototype);

        for (let i = 0; i < names.length; i++) {
            let name = names[i];
            let value = Array.prototype[name];
            if (typeof(value) === 'function') {
                console.log('function : ', name);
            } else {
                console.log(name);
            }
        }
    </script>

</head>

<body>

</body>

</html>